/*
 * Condition.h
 *
 *  Created on: 2010-8-28
 *      Author: Xairy
 */

#ifndef CONDITION_H_
#define CONDITION_H_

#include <string>
using std::string;

class Condition
{
public:
	enum ConditionType
	{
		SAC_AND_CONDITION = 0,
		SAC_OR_CONDITION = 1,
		SAC_NEGITIVE_CONDITION = 2,
		SAC_POSITIONAL_CONDITION = 3,
		SAC_ATTRIBUTE_CONDITION = 4,
		SAC_ID_CONDITION = 5,
		SAC_LANG_CONDTION = 6,
		SAC_ONE_OF_ATTRIBUTE_CONDITION = 7,
		SAC_BEGIN_HYPHEN_ATTRIBUTE_CONDITION = 8,
		SAC_CLASS_CONDITION = 9,
		SAC_PSEUDO_CLASS_CONDITION = 10,
		SAC_ONLY_CHILD_CONDITION = 11,
		SAC_ONLY_TYPE_CONDITION = 12,
		SAC_CONTENT_CONDITION = 13
	};

public:
	virtual ~Condition(){}
	virtual ConditionType getConditionType()const = 0;

	virtual Condition* Copy()const = 0;
	virtual const string* toString()const = 0;
};


#endif /* CONDITION_H_ */
